﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using ERP_RORZE_DLL.Product.database;
using ERP_RORZE_DLL.Product.DAO;
using System.Text.RegularExpressions;

namespace ERP_RORZE_PRODUCT.Product.PartHandling
{
    public partial class frm_InspAnodInput : DevExpress.XtraEditors.XtraForm
    {
        public event EventHandler Reload;
        ClsDInspAnodTable obj = new ClsDInspAnodTable();
        ClsPartHandlingDAO clsParthandinhDAO = new ClsPartHandlingDAO();
        DataTable dt;

        public frm_InspAnodInput()
        {
            InitializeComponent();
        }

        private void frm_InspAnodInput_Load(object sender, EventArgs e)
        {
            //lấy danh sách MONo cho vào combo
            dt = clsParthandinhDAO.GetlAllMONo();
            List<ClsMOTable> objs = new List<ClsMOTable>();
            foreach (DataRow r in dt.Rows)
            {
                ClsMOTable obj = new ClsMOTable();
                obj.MONo = r["MONo"].ToString();  //
                obj.PartID = r["PartID"].ToString();  //
                obj.MOQty = int.Parse(r["MOQty1"].ToString());   ////
                obj.DeadLine = (DateTime)r["Deadline"];
                objs.Add(obj);
            }

            cbMONo.DataSource = objs;
            cbMONo.DisplayMember = "MONo";
            cbMONo.ValueMember = "MONo";

            //lấy danh sách StaffID cho vào combo
            dt = clsParthandinhDAO.GetlAllStaffID();
            cbStaffID.DataSource = dt;
            cbStaffID.DisplayMember = "StaffID";
            cbStaffID.ValueMember = "StaffID";
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            int intOK = 0;
            int intNG = 0;
            dt = clsParthandinhDAO.GetInspHandMO(cbMONo.SelectedValue.ToString());
            foreach (DataRow r in dt.Rows)
            {
                intOK = intOK + int.Parse(r["InspOK"].ToString());
                intNG = intNG + int.Parse(r["InspNG"].ToString());
            }
            if (IsNumber(txtOKQty.Text) == false)
            {
                MessageBox.Show("OKQty phải là kiểu số");
            }
            else if (int.Parse(txtOKQty.Text) < 0)
            {
                MessageBox.Show("OKQty phải lớn hơn 0");
            }
            else if (int.Parse(txtOKQty.Text) > intOK)
            {
                MessageBox.Show("Số lượng OK trong bộ phận kiểm tra: "+intOK+" hãy kiểm tra lại số lượng giao nhận");
            }
            else if (IsNumber(txtNGQty.Text) == false)
            {
                MessageBox.Show("NGQty phải là kiểu số");
            }
            else if (int.Parse(txtNGQty.Text) < 0)
            {
                MessageBox.Show("NGQty phải lớn hơn 0");
            }
            else if (int.Parse(txtNGQty.Text) > intNG)
            {
                MessageBox.Show("Số lượng NG trong bộ phận kiểm tra: "+intNG+" Hãy kiểm tra lại số lượng giao nhận");
            }
            else if (int.Parse(txtNGQty.Text) == 0 && int.Parse(txtOKQty.Text) == 0)
            {
                MessageBox.Show("Số lượng NG và OK không thể đồng thời bằng 0");
            }
            else
            {
                //try
                //{
                obj.Date = dateDate.Value;
                obj.MONo = cbMONo.SelectedValue.ToString();
                obj.StaffID = cbStaffID.Text;
                obj.Finished = checkFinished.Checked;
                obj.INGQty = int.Parse(txtNGQty.Text);
                obj.IOKQty = int.Parse(txtOKQty.Text);
                obj.Note = txtNote.Text;
                clsParthandinhDAO.InsertInspAnodDetail(obj);
                MessageBox.Show("Đã nhập xong");
                Reload(sender, e);
                //}
                //catch
                //{
                //    MessageBox.Show("NGQty, OKQty phải là kiểu số");
                //}
            }
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void cbMONo_SelectedValueChanged(object sender, EventArgs e)
        {
            ClsMOTable obj = ((ClsMOTable)cbMONo.SelectedItem);
            txtMOQty.Text = obj.MOQty.ToString();
            txtDeadline.Text = obj.DeadLine.ToString();
            txtPartID.Text = obj.PartID.ToString();
        }
        public bool IsNumber(string pText)
        {
            Regex regex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$");
            return regex.IsMatch(pText);
        }
        protected override bool ProcessKeyPreview(ref Message m)
        {
            if (m.Msg == 0x0100 && (int)m.WParam == 13)
            {
                this.ProcessTabKey(true);
            }
            return base.ProcessKeyPreview(ref m);
        }
    }
}